import { ref } from 'vue';
import { defineStore } from 'pinia';

export const useBreadcrumbStore = defineStore('breadcrumb', () => {
    // 面包屑列表，默认包含首页
    const breadcrumbList = ref([{
        name: '首页',
        path: '/home?id=0',
        level: 1,
    }]);

    // 添加面包屑
    const addBreadcrumb = (breadcrumb) => {
        if (hasBreadcrumb(breadcrumb)) return;
        breadcrumbList.value.push(breadcrumb);
    };

    // 调整面包屑
    const adjustBreadcrumb = (breadcrumb) => {
        // 精确匹配完整路径（包括参数）
        const index = breadcrumbList.value.findIndex(item => item.path === breadcrumb.path);

        if (index !== -1) {
            // 存在时，删除其后的所有面包屑
            breadcrumbList.value = breadcrumbList.value.slice(0, index + 1);
        } else {
            // 查找相同基础路径（忽略参数）的索引
            const baseIndex = breadcrumbList.value.findIndex(item => getBasePath(item.path) === getBasePath(breadcrumb.path));

            if (baseIndex !== -1) {
                // 删除相同基础路径之后的面包屑，保持层级正确
                breadcrumbList.value = breadcrumbList.value.slice(0, baseIndex + 1);
            }
            addBreadcrumb(breadcrumb);
        }
    };

    // 判断面包屑是否存在（匹配完整路径，包括参数）
    const hasBreadcrumb = (breadcrumb) => {
        return breadcrumbList.value.some(item => item.path === breadcrumb.path);
    };

    // 获取基础路径（去掉 ? 参数部分）
    const getBasePath = (path) => path.split('?')[0];

    return {
        breadcrumbList,
        adjustBreadcrumb
    };
}, {
    persist: {
        enabled: true, // 开启持久化
        strategies: [
            {
                key: 'breadcrumb-store', // 存储的 key
                storage: localStorage, // 存储到 localStorage（可以改成 sessionStorage）
                paths: ['breadcrumbList'] // 只持久化 breadcrumbList
            }
        ]
    }
});
